package com.yidu.labyrinth.controller;

import com.yidu.labyrinth.dao.LabyrinthModuleDao;
import com.yidu.labyrinth.service.LabyrinthModuleService;
import com.yidu.labyrinth.utils.BaseMessage;
import com.yidu.labyrinth.utils.MenuTreeUtil;
import com.yidu.labyrinth.vo.LabyrinthVo;
import com.yidu.labyrinth.vo.Pages;
import org.apache.log4j.Logger;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @描述：
 * @ClassName:labyrinth
 * @backage:com.yidu.labyrinth.controller
 * @Date:2019 2019/9/25 10:15
 * @Author:朱星润
 **/
@Controller
@RequestMapping("/model")
public class LabyrinthModuleController {
    Logger log = Logger.getLogger(getClass());

    @Resource
    LabyrinthModuleService modelService;

    @RequestMapping("selectAll")
    @ResponseBody
    public Map<String, Object> selectAll(Pages pages, LabyrinthVo params) {

        pages.setOverRows(modelService.count(params).intValue());//总行数


        log.info(pages.getOverRows() + "进来了+++++++++++++++");

        Map<String, Object> map = new HashMap<String, Object>();

        List<LabyrinthVo> list = modelService.findAll(params, pages);//分页查询

        map.put("code", 0);
        map.put("msg", "");//消息
        map.put("data", list);//数据
        map.put("page", pages);// 总行数

        return map;
    }

    /**
     * 修改是 否有效
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("result")
    public int result(LabyrinthVo labyrinthVo) {
        LabyrinthVo vo = modelService.findById(labyrinthVo.getModuleId());
        vo.setModuleResult(labyrinthVo.getModuleResult());
        return modelService.update(vo);
    }

    /**
     * 根据id查询
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("findById")
    public LabyrinthVo findById(String id) {
        LabyrinthVo vo = modelService.findById(id);
        return vo;
    }

    /**
     * 查询所有模块（不分页）
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("findAllModel")
    public List<MenuTreeUtil> findAllModule() {
        List<LabyrinthVo> list = modelService.findAllModule();
        //新建一个集合对象
        List<MenuTreeUtil> nodeList = new ArrayList<MenuTreeUtil>();
        //使用循环输出商品类型
        for (LabyrinthVo modelVo : list) {
            //新建一个node工具类对象
            MenuTreeUtil tree = new MenuTreeUtil();
            //给工具类的id赋值
            tree.setId(modelVo.getModuleId());
            //给工具类的外键赋值
            tree.setPid(modelVo.getModuleIds());
            //给工具类的名称赋值
            tree.setName(modelVo.getModuleName());
            //给工具类的地址赋值
            tree.setModuleUrl(modelVo.getModuleUrl());

            //最后将其加入到集合中
            nodeList.add(tree);
        }
        //新建一个node工具类对象
        MenuTreeUtil node = new MenuTreeUtil();
        //新建一个集合对象，将上一个集合加入到本集合中
        List<MenuTreeUtil> nodeList2 = node.createTree(nodeList);
        for (MenuTreeUtil menuTreeUtil : nodeList2) {
            System.out.println(menuTreeUtil.getId() + "===========" + menuTreeUtil.getPid() + "==============" + menuTreeUtil.getName());
        }
        return nodeList2;
    }

    /**
     * 框架
     * @return
     */
    @ResponseBody
    @RequestMapping("X_admin")
    public List<MenuTreeUtil> X_admin() {
        List<LabyrinthVo> list = modelService.X_admin();
        //新建一个集合对象
        List<MenuTreeUtil> nodeList = new ArrayList<MenuTreeUtil>();
        //使用循环输出商品类型
        for (LabyrinthVo modelVo : list) {
            //新建一个node工具类对象
            MenuTreeUtil tree = new MenuTreeUtil();
            //给工具类的id赋值
            tree.setId(modelVo.getModuleId());
            //给工具类的外键赋值
            tree.setPid(modelVo.getModuleIds());
            //给工具类的名称赋值
            tree.setName(modelVo.getModuleName());
            //给工具类的地址赋值
            tree.setModuleUrl(modelVo.getModuleUrl());


            //最后将其加入到集合中
            nodeList.add(tree);
        }
        //新建一个node工具类对象
        MenuTreeUtil node = new MenuTreeUtil();
        //新建一个集合对象，将上一个集合加入到本集合中
        List<MenuTreeUtil> nodeList2 = node.createTree(nodeList);
        for (MenuTreeUtil menuTreeUtil : nodeList2) {
            System.out.println(menuTreeUtil.getId() + "===========" + menuTreeUtil.getPid() + "==============" + menuTreeUtil.getName());
        }
        return nodeList2;
    }


    /**
     * 增加修改
     *
     * @param vo
     * @return
     */
    @RequestMapping("save")
    @ResponseBody
    public BaseMessage save(LabyrinthVo vo) {

        modelService.save(vo);
        BaseMessage bm = new BaseMessage();
        bm.setState(1);
        bm.setMsg("操作成功");
        return bm;
    }


}
